<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* * {
            margin: 0;
            padding: 0;
        } */

        .box {
            /* height: 300px; */
            border: 1px solid #000;
            /* font-size: 0; */
        }

        .box img {
            /* float: left; */
            /* display: block; */
            /* vertical-align: -4px; */
            vertical-align: bottom;
        }
    </style>
</head>

<body>
    <!-- <div class="box">
        <img src="../images/火影1.jpg" alt="">
    </div> -->
    <div>
        <button onclick="f()">点我</button>
        <div class="div1">
            <ul id="ul1">
                <li><a href="" id="a1"></a></li>
                <li><a href=""></a></li>
                <li></li>
                <li></li>
            </ul>
        </div>
    </div>
    <script>
        var f = function () {
            console.log(111);
            console.log(this);
        }
        // var div1 = document.querySelector('.div1');
        // console.log(div1.contains(div1));
        var aaa = { a: { test: 1, b: 2 } };
        var obj = aaa;
        // console.log('test' in obj);
        console.log(obj.a['test']);
        // obj['b'] = {};
        // obj = obj['b']
        // obj['c'] = {};
        // obj = obj['c']
        // console.log(aaa);

        function namespace(oNamespace, sPackage) {
            let keys = sPackage.split('.');
            let obj = oNamespace;
            // console.log(obj);
            for (let key of keys) {
                if (!(key in obj)) {
                    obj[key] = {};
                    obj = obj[key];
                } else {
                    // if (!(key in obj[key])
                }
            }
            return oNamespace;
        }
        console.log(namespace({ a: { test: 1, b: 2 } }, 'a.b.c.d'));
        // function merge(A, m, B, n) {
        // write code here
        // if (m == 0) {
        //     return B;
        // }
        // if (n == 0) {
        //     return A;
        // }
        // var newArr = A.concat(B);
        // A.push(...B);
        //     var newArr = [...A, ...B];
        //     newArr.sort((a, b) => a - b);
        //     return newArr;
        // }
        // console.log(merge([1, 2], 0, [], 2));
        // var obj = [i]
        // console.log(obj);


        // ****解析url
        // function getUrlParam(sUrl, sKey) {
        //     var str = sUrl.substring(sUrl.indexOf('?') + 1, sUrl.indexOf('#'));
        //     // var str = sUrl.split('#')[0].split('?')[1];
        //     var Arr = str.split('&');
        //     if (sKey) {
        //         var arr = [];
        //         haha(arr);
        //         if (arr[sKey] == undefined) {
        //             return '';
        //         } else if (arr[sKey].length == 1) {
        //             return arr[sKey][0];
        //         } else {
        //             return arr[sKey];
        //         }
        //     } else {
        //         if (str == undefined || str == '') {
        //             return {};
        //         } else {
        //             var obj = {};
        //             haha(obj);
        //             return obj;
        //         }
        //     }

        //     function haha(obj) {
        //         for (let i in Arr) {
        //             if (obj[Arr[i].split('=')[0]]) {
        //                 obj[Arr[i].split('=')[0]] += ',' + Arr[i].split('=')[1];
        //                 obj[Arr[i].split('=')[0]] = obj[Arr[i].split('=')[0]].split(',');
        //             } else {
        //                 obj[Arr[i].split('=')[0]] = Arr[i].split('=')[1];
        //             }
        //         }
        //     }
        // }

        // function getUrlParam(sUrl, sKey) {
        //     var str = sUrl.substring(sUrl.indexOf('?') + 1, sUrl.indexOf('#'));
        //     // var str = sUrl.split('#')[0].split('?')[1];
        //     var Arr = str.split('&');
        //     console.log(Arr);
        //     var arr = [];
        //     haha(arr);

        //     return arr;


        //     function haha(obj) {

        //         for (let i in Arr) {
        //             if (obj[Arr[i].split('=')[0]]) {
        //                 obj[Arr[i].split('=')[0]] += ',' + Arr[i].split('=')[1];
        //                 obj[Arr[i].split('=')[0]] = obj[Arr[i].split('=')[0]].split(',');
        //             } else {
        //                 obj[Arr[i].split('=')[0]] = Arr[i].split('=')[1];
        //             }
        //         }
        //     }
        // }
        // var res = getUrlParam('http://www.nowcoder.com?key=19&key=2&key=2&test=4#hehe key', 'key');
        // console.log(res);





        // call(),apply(),bind()
        // var objName = { name: 'JS2016' };
        // var obj = {
        //     name: '0 _ 0',
        //     sayHello: function () {
        //         console.log(this.name);
        //     }.bind(objName)
        // };
        // obj.sayHello();


        // 求数组中的最大值
        // var arr = [1, 2, 3, 4, 5];
        // var res1 = Math.max.apply(null, arr);
        // var res2 = Math.max(...arr);
        // console.log(res1, res2);

        // 找出数组中的重复元素
        function duplicates(arr) {
            // let obj = {};
            // let res = new Set();
            // for (let i in arr) {
            //     if (obj.hasOwnProperty(arr[i])) {
            //         res.add(arr[i]);
            //     } else {
            //         obj[arr[i]] = 1;
            //     }
            // }
            // console.log(Array.from(res));


            // let obj = {};
            // let res = [];
            // for (let i in arr) {
            //     if (obj.hasOwnProperty(arr[i]) && res.indexOf(arr[i]) == -1) {
            //         res.push(arr[i]);
            //     } else {
            //         obj[arr[i]] = 1;
            //     }
            // }
            // console.log(res);

            // let res = [];
            // for (let i = 0; i < arr.length - 1; i++) {
            //     for (let j = i + 1; j < arr.length; j++) {
            //         if (arr[j] == arr[i] && res.indexOf(arr[j]) == -1) {
            //             res.push(arr[j]);
            //             break;
            //         }

            //     }
            // }
            // console.log(res);

            let res = [];
            arr.sort();
            for (let i = 0; i < arr.length - 1; i++) {
                if (arr[i] == arr[i + 1] && res.indexOf(arr[i]) == -1) {
                    res.push(arr[i]);
                }
            }
            console.log(res);
        }
        duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]);



    </script>
</body>

</html>